Supertypes: iterator
Buffered iterator is an abstraction that maintains a buffer and a current position within it, independently of being able to do anything with the buffer, such as reading or writing elements.
Note that the position in buffer
can be any integer, since we don't exit the buffer upon advancing (or generally positioning in some subclasses), only upon subsequently attempting to read, write, or test for exhaustion.